﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Web.Routing;
using SimpleRest.Core.Routing;

namespace SimpleRest.Core
{
    /// <summary>
    /// Interface that should be implemented to model a REST request used to drive the REST pipeline.
    /// </summary>
    public interface IHttpRequestMessage
    {
        /// <summary>
        /// Content body of the REST request.
        /// </summary>
        Stream Content { get; }
        /// <summary>
        /// Request headers for the REST request.
        /// </summary>
        List<Header> Headers { get; set; }
        /// <summary>
        /// Incoming Uri for the REST request.
        /// </summary>
        string Uri { get; }
        /// <summary>
        /// Incoming Http VERB for the REST request.
        /// </summary>
        string Verb { get; set; }
        /// <summary>
        /// Cookies incoming on the REST request
        /// </summary>
        List<Cookie> Cookies { get; set; }
        /// <summary>
        /// The user host address, or ip address, for the REST request.
        /// </summary>
        string UserHostAddress { get; }
        /// <summary>
        /// Route information associated to the request.
        /// </summary>
        RouteInformation RouteInformation { get; }
    }
}
